package com.dreamteam.hackwaterloo.adapters; import java.lang.ref.WeakReference; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.RatingBar; import android.widget.RelativeLayout; import android.widget.TextView; import com.dreamteam.carpuwl.R; import com.dreamteam.hackwaterloo.Constants; import com.dreamteam.hackwaterloo.activities.ActivityDetailedPager; import com.dreamteam.hackwaterloo.adapters.Feed.Event; public class FeedAdapter extends BaseAdapter { private WeakReference<Activity> mContext; private ArrayList<Event> mEvents; private Resources resources; private int[] mColorList; public FeedAdapter(Activity context, List<Event> events) { mContext = new WeakReference<Activity>(context); mEvents = new ArrayList<Event>(); mEvents.addAll(events); resources = context.getResources(); mColorList = new int[]{ resources.getColor(R.color.red), resources.getColor(R.color.orange), resources.getColor(R.color.green), resources.getColor(R.color.blue), resources.getColor(R.color.purple) }; } @Override public int getCount() { return mEvents.size(); } @Override public Event getItem(int position) { return mEvents.get(position); } @Override public long getItemId(int arg0) { // Not used by android framework return 0; } public static class ViewHolder { public RelativeLayout parentView; public ImageView priceBackground; public RatingBar ratingBar; public TextView price; public TextView startingPoint; public TextView endingPoint; public TextView rating; public TextView seats; public TextView timeValue; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { LayoutInflater inflater = LayoutInflater.from(mContext.get()); convertView = inflater.inflate(R.layout.listview_item_feed_posting, null, false); viewHolder = new ViewHolder(); viewHolder.parentView = (RelativeLayout) convertView.findViewById(R.id.find_ride_listview_item_parent); viewHolder.priceBackground = (ImageView) convertView.findViewById(R.id.find_ride_listview_item_price_background); viewHolder.ratingBar = (RatingBar) convertView.findViewById(R.id.find_ride_rating_bar); viewHolder.price = (TextView) convertView.findViewById(R.id.find_ride_listview_item_price); viewHolder.startingPoint = (TextView) convertView.findViewById(R.id.find_ride_listview_item_start); viewHolder.endingPoint = (TextView) convertView.findViewById(R.id.find_ride_listview_item_end); viewHolder.seats = (TextView) convertView.findViewById(R.id.find_ride_listview_item_seats); viewHolder.timeValue = (TextView) convertView.findViewById(R.id.find_ride_listview_item_time_value); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } Event event = getItem(position); viewHolder.parentView.setOnClickListener(new OnEventClickedListener(position)); viewHolder.priceBackground.setBackgroundColor(mColorList[position % 5]); viewHolder.ratingBar.setRating(event.getRating()); viewHolder.price.setText(String.format("$%.2f", event.getPrice())); viewHolder.startingPoint.setText(event.getStartPoint()); viewHolder.endingPoint.setText(event.getEndPoint()); viewHolder.seats.setText(String.format(resources.getString(R.string.find_ride_seats), event.getSeatsRemaining())) ; viewHolder.timeValue.setText(new SimpleDateFormat("MMM dd, h a").format(event.getDepartDate())); return convertView; } private class OnEventClickedListener implements OnClickListener { private int position; public OnEventClickedListener(int position) { this.position = position; } @Override public void onClick(View v) { Intent intent = new Intent(mContext.get(), ActivityDetailedPager.class); intent.putParcelableArrayListExtra(Constants.Extra.Event, mEvents); intent.putExtra(Constants.Extra.EventPosition, position); mContext.get().startActivity(intent); } } }